package org.ehe.erp.service.product;

import com.baomidou.mybatisplus.extension.service.IService;
import org.ehe.common.mybatis.core.page.PageQuery;
import org.ehe.common.mybatis.core.page.TableDataInfo;
import org.ehe.erp.domain.product.ErpMaterial;
import org.ehe.erp.domain.product.bo.ErpMaterialBo;
import org.ehe.erp.domain.product.vo.ErpMaterialVo;

import java.util.List;

/**
 * @author :zhangnn
 * @className :MaterialService
 * @description: TODO
 * @date 2025-09-08 14:31:11
 */
public interface MaterialService extends IService<ErpMaterial>  {

    /**
     * 分页查询
     */
    TableDataInfo<ErpMaterialVo> getMaterialPage(ErpMaterialBo request, PageQuery pageQuery);

    /**
     * 新增材料
     */
    Long addMaterial(ErpMaterialBo request);

    /**
     * 更新材料
     */
    boolean updateMaterial(ErpMaterialBo request);

    /**
     * 删除材料
     */
    boolean deleteMaterial(Long id);

    /**
     * 获取材料详情
     */
    ErpMaterialVo getMaterialDetail(Long id);

    /**
     * 获取所有启用的材料（下拉选择用）
     */
    List<ErpMaterialVo> getAllEnabledMaterials(String tenantId);

    /**
     * 获取下一个可用编码
     */
    String getNextCode(String tenantId);

    /**
     * 检查编码是否可用
     */
    boolean isCodeAvailable(String materialCode, Long excludeId);
}
